package com.legendshop.openportal.sdk.annotation;

import com.legendshop.openportal.sdk.validator.JsonValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.NotNull;
import java.lang.annotation.*;

/**
 * @author jzh
 * @version 1.0.0
 * @title JsonValid
 * @date 2024/6/29 9:19
 * @description：
 */
@Target({ElementType.FIELD,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {JsonValidator.class})
public @interface JsonValid {

    /**
     * 错误提示信息
     *
     * @return
     */
    String message() default "不是json类型或数据长度受限";

    /**
     * 目标类
     */
    @NotNull
    Class<?> target();

    /**
     * 是数组列表，默认不是
     * @return
     */
    boolean isArrayJson() default false;

    /**
     * 数组最大长度，只有 isArrayJson = true 且 arrayMaxSize > 0 时生效
     * @return
     */
    int arrayMaxSize() default -1;

    /**
     * 作用参考@Validated和@Valid的区别
     *
     * @return
     */
    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 是否忽略空值
     */
    boolean ignoreEmpty() default false;
}
